package main

import "fmt"

// 结构体 -值拷贝 值类型 【int系列、float系列、 byte 、string  、 bool 、struct 、数组】
func main() {
	testStruct01()
	testStruct02()
}

func testStruct01() {
	var p1 Person = Person{"小明", 10}
	var p2 = p1                     //此时进行了值拷贝~
	fmt.Printf("%v %p \n", p1, &p1) //{小明 10} 0xc0000081b0
	fmt.Printf("%v %p \n", p2, &p2) //{小明 10} 0xc0000081c8
	p2.Name = "李红"
	fmt.Printf("%v %p \n", p1, &p1) //{小明 10} 0xc0000081b0
	fmt.Printf("%v %p \n", p2, &p2) //{李红 10} 0xc0000081c8
}
func testStruct02() {
	var p1 Person = Person{"小明", 10}
	var p2 *Person = &p1           //此时进行了地址拷贝~
	fmt.Printf("%v %p\n", p1, &p1) //{小明 10} 0xc000114198
	fmt.Printf("%v %p\n", *p2, p2) //{小明 10} 0xc000114198
	p2.Name = "李红"
	fmt.Printf("%v %p\n", p1, &p1) //{李红 10} 0xc000114198
	fmt.Printf("%v %p\n", *p2, p2) //{李红 10} 0xc000114198
}

type Person struct {
	Name string
	Age  int
}
